package com.ruoyi.orderview.utils;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * Author 程家伟
 * Date 2022/1/21 10:08
 * Email 3497357686@qq.com
 *
 * 将日期进行分组，便于返回数据
 */

public class DateGrouping {
    /**
     * 一天的小时数
     */
    private static final int nd = 24;

    /**
     * 一小时的毫秒数
     */
    private static final long nh = 1000*60*60;

    /**
     * 返回的数据量
     */
    private int total;

    /**
     * 判断两时间相差多少毫秒
     */
    public long judgeTime(Date start, Date end){
        return end.getTime()-start.getTime()+24*nh;}


    /**
     * 此方法用来判断返回多少数据量
     */
    public int judgeTotal(long time){
        if (time<=7*nd*nh){
            total= (int) (time/(nd*nh));
        }else if (time<=30*nd*nh){
            total=15;
        }else {
            total=30;
        }
        return total;
    }



    /**
     * 用来将一个时间段划分为各个平均的时间
     * 单位是毫秒
     */
    public long getIntervalTime(Date start,Date end){
        long times = judgeTime(start, end);
        int total = judgeTotal(times);
        return times/total;
    }

    /**
     * 返回各个字符串类型时间段
     */
    public List<String> getTimeList(Date start,Date end)  {
        Date start1=new Date();
        start1.setTime(start.getTime());
        ArrayList<String> dates = new ArrayList<>();
        long intervalTime = getIntervalTime(start, end);
        for (int i = 0; i < total; i++) {
            dates.add(convertDate(start1));
            start1.setTime(start1.getTime()+intervalTime);
        }
        dates.add(convertDate(end));
        start1.setTime(end.getTime()+24*nh);
        dates.add(convertDate(start1));
        return dates;
    }

    /**
     * 返回date类型时间
     */
    public List<Date> getTime(Date start,Date end){
        ArrayList<Date> dates = new ArrayList<>();
        long intervalTime = getIntervalTime(start, end)*nh;
        for (int i = 0; i < total; i++) {
            dates.add(start);
            start.setTime(start.getTime()+intervalTime);
        }
        return dates;
    }


    /**
     * 将date格式转换为String类型
     */
    public String convertDate(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(date);
    }

    /**
     * 返回总页数
     * @return
     */
    public int getPageNum(int number,int size){
        if (number%size==0){
            return number/size;
        }else return number/size+1;
    }
}
